package com.itheima.demo03;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Demo03 {

    public static void main(String[] args) {

        //需求："aababcabcdabcde",获取字符串中每一个字符出现的次数；要求结果:a(5)b(4)c(3)d(2)e(1)

        /*
          1. 定义字符串"aababcabcdabcde"
          2. 将字符串转换成一个字符数组
          3. 创建TreeMap集合对象(键：Character ， 值：Integer)
          4. 遍历字符数组，获取每一个元素，然后根据这个字符从TreeMap集合中获取指定的值
          5. 如果值为null，说明TreeMap集合对象中没有这个键，那么就将这个字符存储到集合中，值为1
          6. 如果值不为null，对值进行+1操作，然后再将这个值存储到集合中
          7. 创建一个StringBuilder对象
          8. 遍历集合按照结果要求拼接字符串
          9. 把StringBuilder对象转换成字符串在控制台进行输出
         */

        //1. 定义字符串"aababcabcdabcde"
        String s = "aababcabcdabcde";

        //2. 将字符串转换成一个字符数组
        char[] chars = s.toCharArray();

        //3. 创建TreeMap集合对象(键：Character ， 值：Integer)
        TreeMap<Character,Integer> treeMap = new TreeMap<>();

        //4. 遍历字符数组，获取每一个元素，然后根据这个字符从TreeMap集合中获取指定的值


        for (char s1 : chars) {

            Integer integer = treeMap.get(s1);

            //5. 如果值为null，说明TreeMap集合对象中没有这个键，那么就将这个字符存储到集合中，值为1
            // 6. 如果值不为null，对值进行+1操作，然后再将这个值存储到集合中
            if (integer == null) {
                treeMap.put(s1, 1);
            } else {
                int i = integer + 1;
                treeMap.put(s1,i);
            }
        }

            // 7. 创建一个StringBuilder对象
            StringBuilder sb = new StringBuilder();

            //8. 遍历集合按照结果要求拼接字符串
            Set<Map.Entry<Character, Integer>> entries = treeMap.entrySet();

            for (Map.Entry<Character, Integer> q : entries){
                sb.append(q.getKey()).append("(").append(q.getValue()).append(")");
            }

            //9. 把StringBuilder对象转换成字符串在控制台进行输出
            String s3 = sb.toString();
            System.out.println(s3);


    }
}
